﻿//////////////////////////////////////////////////////////////////////////////
//
//  Copyright © 1998-2024 Glodon Company Limited.  All rights reserved.
//
//  Use of this software is subject to the terms of the Glodon license
//  agreement provided at the time of installation or download, or which
//  otherwise accompanies this software in either electronic or hard copy form.  
//
//////////////////////////////////////////////////////////////////////////////


#pragma once

#include "GcmpModelInterface.h"
#include "GcmpApiDeclaration.h"
#include "NdbDataSchema.h"

namespace gcmp
{
    /// \brief  可见性类型
    /// 
    /// 定义一些用于可见性判断的标志位，通过对定义的类型进行组合，设置给相关对象可实现自定义可见性的需求
    enum class GCMP_MODEL_INTERFACE_EXPORT VisibilityType : uint32_t
    {
        VisibleInNone = 0U,                 ///< 不可见

        VisibleAlongXDirection = 1U,        ///< 法向沿X方向的视图可见
        VisibleAlongYDirection = 1U << 1,   ///< 法向沿Y方向的视图可见
        VisibleAlongZDirection = 1U << 2,   ///< 法向沿Z方向的视图可见
        VisibleIn3D = 1U << 3,              ///< 3D视图可见

        VisibleInCoarse = 1U << 16,         ///< 粗糙程度下可见
        VisibleInMedium = 1U << 17,         ///< 中等程度下可见
        VisibleInFine = 1U << 18,           ///< 精细程度下可见

        VisibleInGeneralMode = 1U << 25,    ///< 通用模式下可见
        VisibleInReplaceMode = 1U << 26,    ///< 备选模式下可见

        VisibleInAll = ~0U,                 ///< 任意情况均可见
    };
}




